package redis

/**
@description  Redis

@copyright    Copyright 2021 高灯科技
@version      1.0.0
@link         https://www.goldentec.com
@author       venki.chen <venki.chen@goldentec.com>
@datetime     2021/11/13 10:17
*/

import (
	"fmt"
	"github.com/garyburd/redigo/redis"
)

var (
	pool *redis.Pool
)

//
//	init
//	@Description 初始化函数
//  @maxim from focus to execute
//  @author venki.chen
//  @createdtime 2021-11-13 11:13:45
//  @updatedtime 2021-11-13 11:13:45
//
func init() {
	fmt.Println("Redis模块初始化成功……")
	fmt.Println("初始化Redis连接池")
	pool = &redis.Pool{
		MaxIdle:     8,   // 最大空闲数
		MaxActive:   0,   // 表示和数据库的最大连接数，0 表示没有限制
		IdleTimeout: 100, // 最大空闲时间
		Dial: func() (redis.Conn, error) { // 连接Redis，并返回
			return redis.Dial("tcp", "127.0.0.1:6379")
		},
	}
}

//
//	AccessRedis
//	@Description 构建Redis连接池
//  @maxim from focus to execute
//  @author venki.chen
//  @createdtime 2021-11-13 11:42:37
//  @updatedtime 2021-11-13 11:42:37
//
func AccessRedis() {
	// 获取一个连接
	conn := pool.Get()
	defer func(conn redis.Conn) {
		err := conn.Close()
		if err != nil {
			return
		}
	}(conn)

	// 写入数据
	_, err := conn.Do("Set", "love", "sweet")
	if err != nil {
		fmt.Println("conn Do Set err=", err)
		return
	}

	// 读取数据
	do, err01 := redis.String(conn.Do("Get", "love"))
	if err != nil {
		fmt.Println("conn Do Get err01=", err01)
		return
	}

	fmt.Println("Get success value=", do)
}
